<script setup>
import { onMounted, provide, reactive, ref } from 'vue';
import config from './config';
import { getToken } from '@/utils/auth';
import { getCurrentInstance } from 'vue';

// 使用 ref 来创建响应式的全局数据对象
const globalData = reactive({
  config: null
});

// 提供 globalData 供子组件注入
provide('globalData', globalData);

// 初始化应用配置
const initConfig = () => {
  globalData.config = config;
  //console.log('initConfig executed, globalData.config:', globalData.config.appInfo.name); // 添加日志输出，检查是否正确赋值
};

// 检查用户登录状态
const checkLogin = () => {
  if (!getToken()) {
    const { appContext } = getCurrentInstance();
    const $tab = appContext.config.globalProperties.$tab;
    if ($tab) {
      try {
        $tab.reLaunch('/pages/login/login');
      } catch (error) {
        console.error('Failed to reLaunch to login page:', error);
      }
    } else {
      console.error('$tab is undefined');
    }
  }
};

// 初始化应用
const initApp = () => {
  initConfig();
  // 确保配置初始化完成后再进行登录检查
  if (globalData.config) {
    //#ifdef H5
    checkLogin();
    //#endif
  }
};

// 在组件挂载后执行初始化操作
onMounted(() => {
  initApp();
});
</script>

<style lang="scss">
@import '@/static/scss/index.scss';
</style>